package com.example.demo.service.impl;

import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.example.demo.entity.Recipe;
import com.example.demo.mapper.RecipeMapper;
import com.example.demo.service.IRecipeService;
import org.apache.commons.lang3.time.DateFormatUtils;
import org.apache.commons.lang3.time.DateUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.Date;
import java.util.List;
import java.util.Optional;

@Service
public class RecipeService implements IRecipeService {

    @Autowired
    RecipeMapper recipeMapper;

    public Optional<List<Recipe>> selectListByDateOrDefault(Date date) {
        String dateFormat = DateFormatUtils.format(date, "yyyy-MM-dd");
        LambdaQueryWrapper<Recipe> wrapper = new LambdaQueryWrapper<>();
        /**
         *  Date 格式与 Mysql 中的 yyyy-MM-dd 格式不同
         *      1： 转换 Java 中 Date 格式为 yyyy-MM-dd（暂用）
         *      2： 在 mysql 中通过 date_format 函数格式化
         *          这种方式由于有 SQL 的拼接，要注意校验防止注入
         */
        wrapper.apply(date != null, "date = date_format('" + dateFormat + "', '%Y-%m-%d')");
        Optional<List<Recipe>> recipes = Optional.ofNullable(recipeMapper.selectList(wrapper));
        return recipes;
    }
}
